Fix core dumps with gcc -fsanitize=address and GNU/Linux.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 26 Dec 2013 08:57:28 +0000 (00:57 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 26 Dec 2013 08:57:28 +0000 (00:57 -0800)
commit5aa6661e2487f51904905e9cacff2af9e3a0e6a1
tree3dd966aa19ad207147ceafb4d61cb9148701792a
parenta142cd3887faf6ab9e985b5743e4c6483edf425e
Fix core dumps with gcc -fsanitize=address and GNU/Linux.

On my Fedora 19 platform the core dumps were so big that
my desktop became nearly catatonic.
* configure.ac: Check whether addresses are sanitized.
(CANNOT_DUMP): Warn if addresses are sanitized and not CANNOT_DUMP.
(DOUG_LEA_MALLOC): Do not define if addresses are sanitized.
(SYSTEM_MALLOC): Define if addresses are sanitized.
* src/alloc.c (no_sanitize_memcpy) [MAX_SAVE_STACK > 0]: New function.
(Fgarbage_collect) [MAX_SAVE_STACK > 0]: Use it.
(USE_ALIGNED_MALLOC): Do not define if addresses are sanitized.
(mark_memory): Use ATTRIBUTE_NO_SANITIZE_ADDRESS rather than
a clang-only syntax.
* src/conf_post.h (__has_feature): New macro, if not already defined.
(ADDRESS_SANITIZER, ADDRESS_SANITIZER_WORKAROUND)
(ATTRIBUTE_NO_SANITIZE_ADDRESS): New macros.
ChangeLog
configure.ac
src/ChangeLog
src/alloc.c
src/conf_post.h